package com.big.app.service.impl;

import com.big.app.bo.FoodPayBo;
import com.big.app.dao.FoodOrderDao;
import com.big.app.dao.FoodPayDao;
import com.big.app.entity.FoodOrder;
import com.big.app.entity.FoodPay;
import com.big.app.service.FoodPayService;
import com.big.app.util.AliPayUtils;
import com.big.app.util.StringUtils;
import com.big.app.vo.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Random;
@Service
public class FoodPayServiceImpl implements FoodPayService {
    @Autowired
    private FoodPayDao dao;
    @Override
    public R foodPay(FoodPayBo payBo) {
        //1.验证参数
        if(payBo!=null){
            //2.生成 订单号 长的
            String no=createNo();

            //构建支付对象
            AliPayUtils.AliPay pay=new AliPayUtils.AliPay(no, payBo.getMoney(),"测试");
            //发起支付
            String content= AliPayUtils.createPay(pay);

            if(StringUtils.isNoyEmpty(content)){
                //创建支付成功
                //存储到数据库
                FoodPay foodPay =new FoodPay(payBo.getOid(),payBo.getMoney(),no);
                dao.insert(foodPay);
                /*默认支付状态为1  未支付*/
                //返回 - 支付宝生成的表单内容
                return new R(200,content);
            }
        }
        return new R(400,null);
    }
   /* @Override
    public R queryPay(int oid,int type) {
        //1.验证参数
        if(oid>0){
            //2.查询数据库的额支付信息
            Pay pay=dao.selectOne(new QueryWrapper<Pay>().eq("oid",oid));
            //3.验证是否存在
            if(pay!=null){
                //4.如果支付信息为 未支付，那么需要请求第三方支付
                if(pay.getFlag()==1){
                    //5.请求支付宝 查询支付状态
                    String r=AliPayUtils.queryPay(pay.getNo());
                    if(StringUtils.isNoyEmpty(r)) {
                        switch (r) {
                            case "TRADE_CLOSED"://订单关闭
                                pay.setFlag(3);
                                break;
                            case "TRADE_SUCCESS"://交易成功
                                pay.setFlag(2);
                                break;
                            case "TRADE_FINISHED"://交易完成
                                pay.setFlag(4);
                                break;
                        }
                        //更新支付状态
                        dao.updateById(pay);
                    }
                }
                return R.ok(pay);
            }
        }
        return R.fail("网络异常！");
    }*/

    //生成订单号，不超过64位
    private String createNo(){
        return System.currentTimeMillis()+"_"+new Random().nextInt(1000);
    }
}
